package com.zhaotianhao.utils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;

/**
 * 大批量数据添加（非线程）
 */
public class DataImport {
    public static void deposit(List<String[]> list, Integer size, String sql, Connection conn){
        try {
            conn.setAutoCommit(false);//设置手动提交
            PreparedStatement ps = conn.prepareStatement(sql);
            for (int i = 0; i < list.size(); i++) {
                //分批 批量插入
                String[] src= list.get(i);
                for (int j=0;j<src.length;j++){
                    ps.setObject(j+1,src[j]);
                }
                ps.addBatch();//将所有数据转成一条sql
                if((i%size==0)&&(i!=0)){//每到size条数，经行一次提交
                    ps.executeBatch();//批量执行
                    conn.commit();//事务提交
                    conn.setAutoCommit(false);//设置手动提交事务
                    ps.close(); //关闭资源
                    ps = conn.prepareStatement(sql);//再次获取ps对象
                }
            }
            //最后一部分提交
            ps.executeBatch();
            conn.commit();
            ps.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
